import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration';
dayjs.extend(duration);
import { fentchCouponInfoList } from '../../services/coupon/getCouponInfoList';
import Dialog from 'tdesign-miniprogram/dialog/index';
import util from '../../utils/util';

Page({
  /**
   * 页面的初始数据
   */
  data: {
    /** 优惠券列表 */
    voucherList: [],
    /** 图标 */
    icon: {
      empty: 'https://cjbtest.mynatapp.cc/statics/images/linda/coupons/empty.png',
      used: 'https://cjbtest.mynatapp.cc/statics/images/linda/coupons/used.png',
      lostEfficacy: 'https://cjbtest.mynatapp.cc/statics/images/linda/coupons/lost-efficacy.png',
    },
    /** 选项卡值 */
    tabValue: '1',
    page: {
      pageNo: 1,
      pageSize: 10,
      pageMax: 1,
      isTriggered: false,
    },
    /** 画面迁移元 */
    source: '',
    useRule:false,
    tel:'',
    visibleChooseClass: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      source: options.source,
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.clearData()
    this.getCouponInfoList('1');
  },

  /**
   * 点击使用按钮
   */
  useCoupon() {
    this.setData({
      visibleChooseClass: true
    })
    // const showDialog = {
    //   content: '测试一下Dialog的性能',
    //   confirmBtn: '开始测试',
    //   cancelBtn: '取消'
    // };
    // Dialog.confirm(showDialog).then(()=> {
    //   wx.navigateTo({
    //     url: '../test/index',
    //   });
    // }).catch(() => console.log('点击了取消'))
    // .finally(() => Dialog.close());
  },
  goPrpductList() {
    this.setData({
      visibleChooseClass: false
    })
    wx.navigateTo({
      url: '../test/index',
    });
    
  },
  goInsuranceList() {
    this.setData({
      visibleChooseClass: false
    })
    wx.navigateTo({
      url: '../test/index',
    });
    
  },
  closeChooseClass() {
    const selectedCoupon = {
      couponPrice: 0,
      customerCouponId: '',
    };
    wx.setStorageSync('selectedCoupon', selectedCoupon);
    this.setData({
      visibleChooseClass: false
    })
  },
  /**
   * 下拉刷新
   */
  handleRefresher() {
    // 用定时模拟后台访问的过程
    setTimeout(() => {
      this.clearData()
      this.getCouponInfoList(this.data.tabValue);
      this.setData({
        'page.isTriggered': false,
      });
    }, 500);
  },

  handleToLower() {
    let that=this
    console.log("页面问题",that.data.page)
    if(that.data.page.pageNo*that.data.page.pageSize<that.data.page.pageMax){
      that.setData({
        'page.pageNo':that.data.page.pageNo+1,
      })
      that.getCouponInfoList(that.data.tabValue);
    }
    console.log("下拉触底")
  },

  /**
   * 获取优惠券信息（模拟访问后台获取数据）
   * @param {*} useStatus 使用状态
   */
  getCouponInfoList(useStatus) {
    const userInfo = wx.getStorageSync('userInfo');
    let param = {};
    param.status = useStatus;
    param.pageSize = this.data.page.pageSize
    param.pageNo = this.data.page.pageNo
    fentchCouponInfoList(param).then((res) => {
      console.log('优惠券信息', res);
      this.setData({
        'page.pageNo':res.result.current,
        'page.pageSize':res.result.size,
        'page.pageMax':res.result.total,
        tabValue:useStatus,
      })
      if(res.result.total!=0){
        this.setData({
          tel:util.phoneEncryption(res.result.records[0].tel)
        })
      }
      let voucherListTemp = res.result.records;
      let now = dayjs();
      let useCouponId = wx.getStorageSync('selectedCoupon').customerCouponId
      voucherListTemp.forEach((item, index, arr) => {
        if(useCouponId == item.id){
          item.cancelChosen = true
        }else{
          item.cancelChosen = false
        }
        if (item.rebateAmount != 0) {
          item.rebateAmount = item.rebateAmount / 100;
        }
        if (item.useMode === '1') {
          // 使用模式为固定时间内
          let useStartTimeDayjs = dayjs(item.useStartTime);
          let useEndTimeDayjs = dayjs(item.useEndTime);
          if (item.useStatus === '1') {
            // 使用状态是未使用的场合
            if (now.isBefore(dayjs(item.useStartTime))) {
              // 系统时间在使用开始时间之前，当前为待使用
              item.time = `${useStartTimeDayjs.format(
                'YYYY.MM.DD',
              )} - ${useEndTimeDayjs.format('YYYY.MM.DD')}`;
              item.tips = '待使用';
              item.tipsStatus = '1';
              item.days = Math.ceil(dayjs(item.useStartTime).diff(now,"day",true))
            } else if (useEndTimeDayjs.diff(now, 'hour') > 48) {
              // 系统时间与到期时间大于48小时，当前为活动中
              item.time = `有效期至${useEndTimeDayjs.format('YYYY.MM.DD')}`;
              item.tips = '活动中';
              item.tipsStatus = '2';
            } else {
              // 系统时间与到期时间小于48小时，当前为即将失效
              item.time = '48小时后到期';
              item.tips = '即将失效';
              item.tipsStatus = '3';
            }
          } else {
            // 使用状态是已使用或已失效的场合
            item.time = `${useStartTimeDayjs.format(
              'YYYY.MM.DD',
            )} - ${useEndTimeDayjs.format('YYYY.MM.DD')}`;
            item.tips = '';
            item.tipsStatus = '';
          }
        } else {
          // 使用模式为领取后限时
          // 根据领用时间和限时时间计算出最后的限时时间
          let limitTime = dayjs(item.getTime).add(item.limitMinute, 'hour');
          if (item.useStatus === '1') {
            // 使用状态是未使用的场合
            if (limitTime.diff(now, 'hour') > 24) {
              // 限时时间比系统时间大于24小时，剩余时间限时XX天XX小时
              item.time = this.formatTime(limitTime.diff(now));
              item.tips = '即将失效';
              item.tipsStatus = '3';
            } else {
              // 限时时间比系统时间小于等于24小时，剩余时间限时XX小时XX分
              item.time = this.formatTime(limitTime.diff(now));
              item.tips = '即将失效';
              item.tipsStatus = '3';
            }
          } else {
            // 使用状态是已使用或已失效的场合
            item.time = `${dayjs(item.getTime).format(
              'YYYY.MM.DD',
            )} - ${limitTime.format('YYYY.MM.DD')}`;
            item.tips = '';
            item.tipsStatus = '';
          }
        }
      });
      let couponList = this.data.voucherList
      couponList.push(...voucherListTemp)
      this.setData({
        voucherList: couponList,
      });
    });
  },
  /**
   * 优惠券未到使用时间不可使用
   */
  unusable(e){
    const checkdialog = {
      content: `这张优惠券将在${e.target.dataset.days}天后生效，届时您就可以享受优惠。感谢您的理解与耐心等待！`,
      confirmBtn: {
        content: '我知道了',
        bindtap({}) {
          Dialog.close();
        },
      },
    };
    Dialog.confirm(checkdialog);
  },
  /**
   * 取消使用优惠券
   */
  cancelUse(event){
    console.log("cancelUse",event)
  },
  /**
   * 选项卡切换
   * @param {*} event
   */
  onTabsChange(event) {
    this.setData({
      tabValue: event.detail.value,
    });
    this.clearData()
    this.getCouponInfoList(event.detail.value);
  },

  /**
   * 时间格式化
   * @param {*} timeDiff 时间差
   */
  formatTime(timeDiff) {
    const duration = dayjs.duration(timeDiff);

    if (duration.days() >= 1) {
      return `剩余${Math.floor(duration.days())}天${duration.hours()}小时`;
    } else {
      return `剩余${duration.hours()}小时${duration.minutes()}分`;
    }
  },
  clearData(){
    this.setData({
      voucherList:[],
      'page.pageNo':1,
      'page.pageSize':10,
      'page.pageMax':1
    })
  },
  /**
   * 使用规则
   */
  useRule(){
    this.setData({
      useRule:true
    })
  },
  /**
   * 我知道了
   */
  know(){
    this.setData({
      useRule:false
    })
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
